home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_87 / debuggin.pas < prev    next >
Pascal/Delphi Source File  |  1995-01-01  |  3KB  |  114 lines

  1. {****************************************************************************}
  2. {                                                                            }
  3. { MODULE:         Debugging                                                  }
  4. {                                                                            }
  5. { DESCRIPTION:    Provides a set of procedures useful for debugging. Uses    }
  6. {                 the Output43 routines for output.                          }
  7. {                                                                            }
  8. { AUTHOR:         Juan Carlos Arévalo                                        }
  9. {                                                                            }
  10. { MODIFICATIONS:  Nobody (yet ;-)                                            }
  11. {                                                                            }
  12. { HISTORY:        17-Oct-1992 Documentation                                  }
  13. {                                                                            }
  14. { (C) 1992 VangeliSTeam                                                      }
  15. {____________________________________________________________________________}
  16.  
  17. UNIT Debugging;
  18.  
  19. INTERFACE
  20.  
  21. CONST
  22.   Debug : BOOLEAN = TRUE; { Set to FALSE to deactivate the debugging output. }
  23.  
  24.  
  25.  
  26.  
  27. PROCEDURE SetOffs  (MyOffs: WORD);
  28. PROCEDURE SetBorder(R, G, B: BYTE);          { Set the overscan DAC register.              }
  29. PROCEDURE WriteNum (Offs, w: WORD; a: BYTE); { Write a number at a position of the screen. }
  30. PROCEDURE WriteChar(c: CHAR; a: BYTE);       { Write a character and attr sequentially.    }
  31. PROCEDURE WriteSNum(w: WORD; a: BYTE);       { Write a number and attr sequentially.       }
  32.  
  33.  
  34.  
  35.  
  36. IMPLEMENTATION
  37.  
  38. USES Output43, HexConversions;
  39.  
  40. CONST
  41.   Offs : WORD = 0;
  42.  
  43.  
  44.  
  45.  
  46. PROCEDURE SetOffs(MyOffs: WORD);
  47.   BEGIN
  48.     Offs := MyOffs;
  49.   END;
  50.  
  51.  
  52. PROCEDURE SetBorder(R, G, B: BYTE); ASSEMBLER;
  53.   ASM
  54.         MOV     AL,Debug
  55.         AND     AL,AL
  56.         JZ      @@End
  57.  
  58.         MOV     DX,$3C8
  59.         MOV     AL,0
  60.         OUT     DX,AL    { Set overscan register for writing. }
  61.         INC     DX
  62.  
  63.         MOV     AL,R
  64.         JMP     @@0
  65. @@0:    OUT     DX,AL
  66.         MOV     AL,G
  67.         JMP     @@1
  68. @@1:    OUT     DX,AL
  69.         MOV     AL,B
  70.         JMP     @@2
  71. @@2:    OUT     DX,AL
  72.  
  73. @@End:
  74.   END;
  75.  
  76.  
  77. PROCEDURE WriteNum(Offs, w: WORD; a: BYTE);
  78.   VAR
  79.     s : STRING[6];
  80.   BEGIN
  81.     IF Debug THEN
  82.       BEGIN
  83.         STR(w : 6, s);
  84.         DirectWriteAttr(Offs, s, a);
  85.       END;
  86.   END;
  87.  
  88.  
  89. PROCEDURE WriteChar(c: CHAR; a: BYTE);
  90.   BEGIN
  91.     IF Debug THEN
  92.       BEGIN
  93.         DirectWriteAttr(Offs, c, a);
  94.         INC(Offs, 2);
  95.       END;
  96.   END;
  97.  
  98.  
  99. PROCEDURE WriteSNum(w: WORD; a: BYTE);
  100.   VAR
  101.     s : STRING[4];
  102.     i : WORD;
  103.   BEGIN
  104.     IF Debug THEN
  105.       BEGIN
  106.         s := HexWord(w);
  107.         FOR i := 1 TO 4 DO WriteChar(s[i], a);
  108.       END;
  109.   END;
  110.  
  111.  
  112.  
  113.  
  114. END.